﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SPM.DTL;

namespace SPM.DAL
{
    /**
     *       Autor: Michael S./Lucas C.
     *        Data: 08/11/2008 10:39
     *   Descricao: Classe que realiza o acesso a dados da entidade Colaborador.  
     */
    public class ColaboradorDao:DataAccessObject<ColaboradorDto>
    {

        /**
         *  Método responsavel por bindar no objeto item(ColaboradorDto) 
         *  as informações resgatadas do banco(reader)
         */
        internal override void FillDto(System.Data.IDataReader reader, ColaboradorDto item)
        {
            item.Id = (int) reader["idColaborador"];
            item.CpfCnpj = (String)reader["cpf_cnpj"];
            item.NomeRazao = (String)reader["nome_razao"];
            item.Telefone = (String)reader["telefone"];
            item.Observacao = new StringBuilder((String)reader["observacao"]);
            
        }

        /**
         *  Método responsavel por retornar o nome da tabela entidade colaborador
         */
        public override string TableName
        {
            get { return "colaborador"; }
        }

        protected override System.Data.IDbCommand CreateUpdateCommand(int id, ColaboradorDto colaborador)
        {
            string sqlUpdate = String.Format("UPDATE COLABORADOR SET nome_razao = '{0}', telefone = '{1}'," +
            "observacao = '{2}' where cpf_cnpj = '{3}'", colaborador.NomeRazao, colaborador.Telefone,
            colaborador.Observacao, colaborador.CpfCnpj);

            return factory.CreateCommand(sqlUpdate);
        }

        protected override ColaboradorDto CreateItemFromReader(System.Data.IDataReader reader)
        {
            ColaboradorDto colaborador = new ColaboradorDto();

            colaborador.Id = (int) reader["idColaborador"];
            colaborador.CpfCnpj = (String) reader["cpf_cnpj"];
            colaborador.NomeRazao = (String)reader["nome_razao"];
            colaborador.Telefone = (String)reader["telefone"];
            colaborador.Observacao = (StringBuilder)reader["observacao"];

            return colaborador;
        }

        protected override System.Data.IDbCommand CreateInsertCommand(ColaboradorDto colaborador)
        {
            string sqlInsert = String.Format("INSERT INTO {0} (cpf_cnpj,nome_razao,telefone,observacao) " +
                "VALUES('{1}','{2}','{3}','{4}')", TableName, colaborador.CpfCnpj, colaborador.NomeRazao, colaborador.Telefone,
                colaborador.Observacao.ToString());

            return factory.CreateCommand(sqlInsert);
        }
    }
}
